﻿#pragma once

#include "../MonsterObject.h"
#include "../../MirDatabase/MonsterInfo.h"
#include "../DelayedAction.h"
#include "../MapObject.h"
#include "../../../Shared/Packet.h"
#include <string>
#include <cmath>
#include <any>
#include "exceptionhelper.h"
#include "../../../stringhelper.h"

using namespace Server::MirDatabase;
using namespace Server::MirEnvir;
namespace S = ServerPackets;

namespace Server::MirObjects::Monsters
{
    class VampireSpider : public MonsterObject
    {
    public:
        bool Summoned = false;
        long long AliveTime = 0;
        long long deadTime = 0;

    protected:
        VampireSpider(MonsterInfo *info);

    public:
        std::string getName() const override;
        void setName(const std::string &value) override;

        void Process() override;

        void Process(DelayedAction *action) override;

        void PetRecall(MapObject *target);

    protected:
        void ProcessAI() override;

    public:
        void Die() override;

    protected:
        bool InAttackRange() override;
        void Attack() override;

    private:
        void AttackLogic();

        void MasterVampire(int value, MapObject *ob);

    public:
        void Spawned() override;

        Packet *GetInfo() override;

    };
}
